package com.fjec.market.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * <p>
 * 041.实物订单表
 * </p>
 *
 * @author admin
 * @since 2020-09-21
 */
@Data
@TableName(value = "biz_physical_order", autoResultMap = true)
public class BizPhysicalOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键Id
     */
    @TableId("Id")
    private Long id;

    /**
     * 支付Id
     */
    @TableField("PaymentId")
    private Long paymentId;

    /**
     * 订单类型 1=水果零售订单
     * 2=水果批量采购订单（批量采购时，订单详细表的原价格、实际购买价格、购买数量均为0）
     * 3=知识付费
     */
    @TableField("OrderType")
    private Integer orderType;

    /**
     * 出售商铺类型
     */
    @TableField("ShopType")
    private Integer shopType;

    /**
     * 出售商铺Id
     */
    @TableField("ShopId")
    private Long shopId;

    /**
     * 出售商铺信息 name: 张三的店铺
     * headUrl: 张三的店铺的图片
     */
    @TableField(value = "ShopInfo", typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> shopInfo;

    /**
     * 购买用户Id
     */
    @TableField("UserId")
    private Long userId;

    /**
     * 购买用户店铺名或微信昵称
     */
    @TableField("BuyerShopName")
    private String buyerShopName;

    /**
     * 总金额 单位分
     */
    @TableField("Amount")
    private Integer amount;

    /**
     * 实际金额 单位分
     */
    @TableField("RealAmount")
    private Integer realAmount;

    /**
     * 支付方式 1=微信
     * 2=支付宝
     * 3=借记卡
     * 4=信用卡
     */
    @TableField("PaymentType")
    private Integer paymentType;

    /**
     * 邮费 单位分
     */
    @TableField("Postage")
    private Integer postage;

    /**
     * 是否使用优惠
     */
    @TableField("UseDisc")
    private Integer useDisc;

    /**
     * 优惠信息 {voucher: [{id: xxxxxxxx, start:2020-08-08 00:00, end: 2020-08-09 00:00}],discount: {start:2020-08-08 00:00, end: 2020-08-09 00:00, discount: 0.8}}
     */
    @TableField(value = "DiscInfo", typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> discInfo;

    /**
     * 收货信息 收货信息，包括收件人、电话、地址
     */
    @TableField(value = "ReceiveInfo", typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> receiveInfo;

    /**
     * 支付时间
     */
    @TableField("PaidTime")
    private LocalDateTime paidTime;

    /**
     * 订单状态 1=未付款
     * 2=已付款
     * 3=已发货
     * 4=已签收
     */
    @TableField("OrderStatus")
    private Integer orderStatus;

    /**
     * 备注
     */
    @TableField("Remark")
    private String remark;

    /**
     * 更新版本号 更新数据版本号
     */
    @Version
    @TableField("UpdateVer")
    private Integer updateVer;

    /**
     * 删除标记 0=否
     * 1=是
     */
    @TableField("DelFlag")
    private Integer delFlag;

    /**
     * 创建时间
     */
    @TableField("CreateTime")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("UpdateTime")
    private LocalDateTime updateTime;

    /**
     * 总订单guid
     */
    @TableField("Guid")
    private String guid;

    /**
     * 商铺号码
     */
    @TableField("ShopNum")
    private Long shopNum;

    /**
     * 子订单数量
     */
    @TableField("SubOrderNum")
    private Integer subOrderNum;

    /**
     * 佣金比例
     */
    @TableField("Commission")
    private BigDecimal commission;

    /**
     * 担保交易状态
     * 0=未发货 1=已发货 2=已收货
     */
    @TableField("GuaranteeStatus")
    private Integer guaranteeStatus;
}
